//import "java.io.*"; import "java.awt.*"; import "java.awt.image.*"; import "javax.imageio.*";
//
///*
//	FileIO.java 
//	(c)1999-2003 SSC Development Team
//	Function: File interaction library
//	Allowed Dependencies: None	
//*/
//
//@implementation 
//FileIO
//{
//	//TODO: Implement Load/Save dialogues!
//	
// 	public static void SaveMap(Object object, SmeeFrame parent) 
// 	{
//    try {
//        // Open save dialog
//        int failed = 0;
//        FileDialog dia = new FileDialog(parent, "Save Map...", FileDialog.SAVE );
//        dia.setVisible(true);
//        if(dia.getFile() == null) 
//        	{ 
//        	dia.dispose(); 
//        	parent.Refocus();      	
//        	return; 
//        	}    
//        
//        String output = dia.getFile();
//        
//        if(!output.endsWith(".smf")) { output = output+".smf"; }
//        
//        // Serialize to a file
//       	ObjectOutput out = new ObjectOutputStream(new FileOutputStream(output));
//       	out.writeObject(object);           
//   	    out.close();
//		dia.dispose();
//		parent.Refocus();
//    	} catch (IOException e) { System.out.println(e); System.out.println("Save failed"); }
//    }
//
//  public static void SaveTileset(Object object, SmeeFrame parent) 
//  {
//    try {
//        // Open save dialog
//        int failed = 0;
//        FileDialog dia = new FileDialog(parent, "Save Tileset...", FileDialog.SAVE );
//        dia.setVisible(true);
//        if(dia.getFile() == null) 
//          { 
//          dia.dispose(); 
//          parent.Refocus();       
//          return; 
//          }    
//        
//        String output = dia.getFile();
//        
//        if(!output.endsWith(".tiles")) { output = output+".tiles"; }
//        
//        // Serialize to a file
//        ObjectOutput out = new ObjectOutputStream(new FileOutputStream(output));
//        out.writeObject(object);           
//        out.close();
//    dia.dispose();
//    parent.Refocus();
//    } catch (IOException e) { System.out.println(e); System.out.println("Save failed"); }
//  }
//
//  public static synchronized Object LoadMap(SmeeFrame parent)
//  {
//    try {
//    	// Open load dialog
//        FileDialog dia = new FileDialog(parent, "Load Map...", FileDialog.LOAD );
//        dia.setVisible(true);
//        if(dia.getFile() == null) 
//        	{ 
//        	dia.dispose(); 
//        	parent.Refocus();
//        	System.out.println("File does not seem to exist!");
//        	return(Buffer.getCurMap());   	
//        	}
//        String input = dia.getFile();
//        String dir = dia.getDirectory();
//        //System.out.println(dir);
//
//        // Deserialize from a file
//        File file = new File(dir+"/"+input);
//        ObjectInputStream in = new ObjectInputStream(new FileInputStream(file));
//        // Deserialize the object
//        Object o = in.readObject();
//        in.close();
//        
//        
//        dia.dispose();
//        parent.Refocus();
//        return o;
//    	} 
//    catch (ClassNotFoundException e) { System.out.println(e); System.out.println("Unable to recognize stored class."); } 
//    catch (IOException e) { System.out.println(e); System.out.println("Load failed"); }
//    return null;
//	}
//	
//  public static synchronized Object LoadTileset(SmeeFrame parent)
//  {
//    try {
//      // Open load dialog
//        FileDialog dia = new FileDialog(parent, "Load Tileset file...", FileDialog.LOAD );
//        dia.setVisible(true);
//        if(dia.getFile() == null || dia.getFile().endsWith(".tiles") == false) 
//          { 
//          dia.dispose(); 
//          parent.Refocus();
//          System.out.println("File has a wrong extension or does not seem to exist!");
//          return(Buffer.getCurMap().getTileset());    
//          }
//        String input = dia.getFile();
//        String dir = dia.getDirectory();
//        //System.out.println(dir);
//
//        // Deserialize from a file
//        File file = new File(dir+"/"+input);
//        ObjectInputStream in = new ObjectInputStream(new FileInputStream(file));
//        // Deserialize the object
//        Object o = in.readObject();
//        in.close();
//        
//        
//        dia.dispose();
//        parent.Refocus();
//        return o;
//      } 
//    catch (ClassNotFoundException e) { System.out.println(e); System.out.println("Unable to recognize stored class."); } 
//    catch (IOException e) { System.out.println(e); System.out.println("Load failed"); }
//    return null;
//  }
//  
//  /*Replace the existins tileset with a freshly loaded one from image*/
//  public static synchronized void LoadTileset(TileDialog parent)
//  {
//      // Open load dialog
//        FileDialog dia = new FileDialog(parent, "Load Tileset from image...", FileDialog.LOAD );
//        dia.setVisible(true);
//        if(dia.getFile() == null) 
//          { 
//          dia.dispose(); 
//          System.out.println("File does not seem to exist!");
//          return;    
//          }
//        String input = dia.getFile();
//        String dir = dia.getDirectory();
//        System.out.println(dir+"/"+input);
//
//        Buffer.getCurMap().setTileset(new Tileset(dir+"/"+input));
//        Buffer.initializeTiles(Buffer.getCurMap()); 
//               
//        dia.dispose();
//  }
//  
//  /*String filename = imptiles.getText();
//    System.out.println("The file is: "+filename);
//    if(filename != "") {  
//      Buffer.getCurMap().setTileset(Lib_Util.ImportIntoTileset(filename,Buffer.getCurMap().getTileset()));
//      Buffer.initializeTiles(Buffer.getCurMap()); 
//    }*/
//  
//  /* Add a second tileset to the existing one. */
//  public static synchronized void ImportTileSet(TileDialog parent)
//  {
//      // Open load dialog
//        FileDialog dia = new FileDialog(parent, "Load Tileset...", FileDialog.LOAD );
//        dia.setVisible(true);
//        if(dia.getFile() == null) 
//          { 
//          dia.dispose(); 
//          System.out.println("File does not seem to exist!");
//          return;    
//          }
//        String input = dia.getFile();
//        String dir = dia.getDirectory();
//        System.out.println(dir+"/"+input);
//
//        Buffer.getCurMap().setTileset(Lib_Util.ImportIntoTileset(dir+"/"+input,Buffer.getCurMap().getTileset()));
//        Buffer.initializeTiles(Buffer.getCurMap());
//               
//        dia.dispose();
//  }   
//    
//    /*
//     * This functions renders a single map layer to a file with corresponding name!
//     */
//    public static void RenderToImage(int layer)
//    {   
//  
//    int w = Buffer.getCurMap().getWidth()*24;
//    int h = Buffer.getCurMap().getHeight()*24;
//  
//    // Create a buffered image in which to draw
//    BufferedImage bufferedImage = new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB);
//    
//    // Create a graphics contents on the buffered image
//    Graphics2D g2d = bufferedImage.createGraphics();
//    
//    if(layer < 3 && layer > -1) {
//    	Lib_Image.renderMap(Buffer.getCurMap(), g2d, null, 0, 0, 
//    		Buffer.getCurMap().getWidth()*24, 
//    		Buffer.getCurMap().getHeight()*24, layer, 0);
//    	}
//    else {
//    	Lib_Image.renderMap(Buffer.getCurMap(), g2d, null, 0, 0, 
//    		Buffer.getCurMap().getWidth()*24, 
//    		Buffer.getCurMap().getHeight()*24, 0, 0);
//    	Lib_Image.renderMap(Buffer.getCurMap(), g2d, null, 0, 0, 
//    		Buffer.getCurMap().getWidth()*24, 
//    		Buffer.getCurMap().getHeight()*24, 1, 0);
//    	Lib_Image.renderMap(Buffer.getCurMap(), g2d, null, 0, 0, 
//    		Buffer.getCurMap().getWidth()*24, 
//    		Buffer.getCurMap().getHeight()*24, 2, 0);		
//    }	
//       
//    // Graphics context no longer needed so dispose it
//    g2d.dispose();
//    
//    try {
//        // Save as PNG
//        File file = new File("map_full.png");
//        
//        if(layer < 3 && layer > -1) {
//        	file = new File("layer"+layer+".png");
//       		}
//        
//        ImageIO.write(bufferedImage, "png", file);
//    } catch (IOException e) {
//    }
//    }
//
//
//    
//}